package com.hope.class_;

import com.hope.Car;

/**
 * 演示得到Class对象的各种方式 （6种）
 */
public class GetClass {
    public static void main(String[] args) throws Exception {
        //1. Class.forName
        String classAllPath="com.hope.Car";//通过读取配置文件获取
        Class<?> cls1 = Class.forName(classAllPath);
        System.out.println(cls1);

        //2. 类名.class 应用场景：用于参数传递
        Class cls2 = Car.class;
        System.out.println(cls2);

        //3. 对象.getclass() 应用场景，有对象实例
        Car car =new Car();
        Class cls3 = car.getClass();
        System.out.println(cls3);

        //4. 通过类加载器（4种）起来获得类的Class对象
        //（1）先得到类加载器 car
        ClassLoader classLoader = car.getClass().getClassLoader();
        //（2）通过类加载器得到Class对象
        Class<?> cls4 = classLoader.loadClass(classAllPath);
        System.out.println(cls4);

//        获取Class类对象
//        5.基本数据(int, char,boolean,float,double,byte,long,short)按如下方式得到Class类 对象
        Class<Integer> integerClass = int.class;
        Class<Character> characterClass = char.class;
        Class<Boolean> booleanClass = boolean.class;
        System.out.println(integerClass); //int

//        6.基本数据类型对应的包装类，可以通过.TYPE得到Class类对象
        Class<Integer> type = Integer.TYPE;
        Class<Character> type1 = Character.TYPE;
        System.out.println(type);

    }

}
